Shopping list creator and optimizer

ABSTRACT

A mobile app creates and optimizes a shopping list of items based on one or more predetermined objectives for a shopping trip. The objectives include total cost, time, number of stops, preferred stores, preferred brands, and others. The mobile app may calculate total costs for the items from prices at one or more stores near the shopper. The app. divides the items among multiple stores, factoring in travel, fuel, preferences, discounts, coupons, store loyalty cards, item availability, and the like and optimizes the order the items are purchased from multiple stores, based on the objective(s). Shopping may also be ordered by sequence of item selection within stores.

TECHNICAL FIELD

The present disclosure generally relates to data processing techniques.More specifically, the present disclosure describes a technique forcreating and optimizing a shopping list so that the items on theshopping list are purchased based on predetermined objectives.

BACKGROUND

The Internet and the World Wide Web have given rise to a wide variety ofon-line retailers that operate virtual stores from which consumers canpurchase products (i.e., merchandise, or goods) as well as services.Although the popularity of these on-line retail sites is clearlyevidenced by their increasing sales, for a variety of reasons, someconsumers may still prefer to purchase items in a more conventionalmanner—i.e., via a brick-and-mortar store. Even when purchasing itemsfrom a brick-and-mortar store, various web-based applications and toolsmay be used to optimize the order in which such items may be purchased.

DESCRIPTION OF THE DRAWINGS

Some embodiments are illustrated by way of example and not limitation inthe figures of the accompanying drawings:

FIG. 1 is a block diagram depicting a system for optimizing shoppinglists, where the items on the shopping list may be arranged inaccordance with the distance and/or travel time between a shopper'slocation and the location of the items, the shopping list optimizedbased on a predetermined objective according to an example embodiment;

FIG. 2 is a block diagram illustrating an environment for operating amobile device, according to an example embodiment;

FIG. 3 is a block diagram illustrating a mobile device, according to anexample embodiment;

FIG. 4 is a block diagram illustrating a network-based system for use inoptimizing shopping lists based on a predetermined objective, accordingto an example embodiment;

FIG. 5 is a flowchart illustrating a method for creating a shoppinglist, according to an example embodiment;

FIG. 6 is a flowchart illustrating a method for optimizing a shoppinglist, according to an example embodiment;

FIG. 7 is a flowchart illustrating a method for checking selected itemsoff a shopping list and updating shopping objectives, according to anexample embodiment;

FIG. 8 is an example shopper interface diagram showing a shopperinterface that may be used in shopping list optimization, according toan example embodiment;

FIG. 9 is a diagrammatic representation of a machine in the example formof a computer system within which a set of instructions for causing themachine to perform any one or more of the methodologies discussed hereinmay be executed.

DETAILED DESCRIPTION

The present disclosure describes data processing techniques for creatingand optimizing a shopping list to order the obtaining of products and/orservices (hereinafter “items”) that are being offered viabrick-and-mortar and/or online retail stores, and then present theoptimized results in such a manner that conveys to the viewer in asimple and intuitive manner the distance and/or travel time between alocation of the shopper, and one or more brick-and-mortar stores atwhich the items may be obtained, the optimization being based on apredetermined objective. In the following description, for purposes ofexplanation, numerous specific details are set forth in order to providea thorough understanding of the various aspects of differentembodiments. It will be evident, however, to one skilled in the art,that the present embodiments may be practiced without all of thespecific details.

Creating the Shopping List

Embodiments are not limited to mobile devices but could be implementedpartly on a mobile device and partly on a laptop or other stationarycomputing device. The shopping list creator and optimizer may recognizea list of shopping items on a mobile device, either within a mobile appprovided by a publication system such as eBay, Inc,® or in a separateapp. The list may be imported into the eBay app if found within anexternal application. In one embodiment, the list may be created by ashopper using an input mechanism (e.g., keyboard, camera, voice input)and then imported into the app. In some embodiments the shopping list tobe optimized may be created by the shopper at home, or at some otherlocation, using a computer. The optimized shopping list may be returnedto the computer for use when the shopper embarks on the shopping trip.However, in many embodiments, the list is created on, or imported to,the mobile device, either manually by the shopper or automatically asmore fully described below, and returned to the mobile device inoptimized format. Alternatively, the optimized list may be returned toboth the home computer and the mobile device for use as the shopperdesires.

In another embodiment, the list may be created by the shopper using anyof a variety of applications, including a cell phone note padapplication. In another embodiment, the user may execute a search (on asearch engine, website, or within (or associated with) the mobile app,etc.) and select items for inclusion on the list such as, for example,by searching the shopper's email, text messages, voice mail, photos, andother suitable content and create the list from the content. As oneexample, the shopper's wife may text the shopper, “don't forget themilk, also buy bread.” The mobile app can be actuated and set to scanfor a predetermined time period, a predetermined number of messages, ormessages from a particular person, among other things, each of which maybe set by the shopper, to determine relevant emails, texts (such as theabove text message), voice mail, photos, instant chat messages, videos,and the like that are appropriately designated as including shoppinglist content. Recognition can be by appropriate reading technology foremail and text, voice recognition for voice mails, and visualrecognition for photos. The results of the scan may be sent to thepublication system for use in conjunction with optimizing the list anddetecting purchased items.

In some embodiments, a scanning layer or engine may be implemented, forexample, just above the OS layer of the mobile device, and might beconstantly or intermittently active for scanning the above emails,texts, chats, voice mails, photos, and the like for more efficiency forthe shopper. For example, the scanning layer may execute in thebackground of the device and may activate itself upon detecting that amessage is received by an account (e.g., email account, chat account,cellular account) associated with the mobile device. In either case, thelayer or the app will extract out data such as the item names,quantities, brands, type, (e.g., organic) from the received message andadd the extracted data to a shopping list. In some embodiments, theextracted data may include metadata accompanying the extracted data.Once a list is populated with one or more items extracted from amessage, the scanning layer may return to a passive listening mode (toconserve device battery life, among other reasons) to await detection ofanother incoming message. In some embodiments, the scanning layer may beselectively enabled or disabled by the user to permit the user toexercise control over the privacy of the data contained on or receivedby the device. For ease of description, the app and the layer will bereferred to collectively herein by the term “app” although one ofordinary skill in the art will readily recognize that either term couldbe used.

Optimizing the Shopping List

Accordingly, the optimized shopping list may be provided to the shopperon the mobile phone, optionally with maps and directions. In someembodiments, the shopper location may be obtained automatically using alocation system (e.g., GPS, triangulation, shopper input of location,wi-fi detection). Or the shopper may simply select a location on a map(using a pointing device, such as a mouse, or a finger or stylus with atouch screen display) to indicate a location at which the shopper willbe at some future time and from which the distance or travel time toanother locations such as stores for obtaining the items should bederived. With some embodiments, the shopper may define a circular regionby simply dragging his or her finger or stylus (or taking a similaraction with a pointing device) to specify a diameter, or radius, of acircle making up a circular region (see example illustrated in FIG. 8)from which search results should be presented. In other embodiments, theshopper may simply draw any closed shape to specify the region to besearched for local results. In yet other embodiments, the shopper maytrace or highlight a specific road or set of roads that comprise a routethat the shopper frequently travels.

In another embodiment a shopper that is using public transit may specifythe number of the vehicle or transit route and the time of departure andthe system, interacting with publically available route maps, may obtainthe route of transit to be used to identify stores associated at whichthe items on the shopping list may be purchased, such that those storesclosest in distance or travel time to any point along the route can bepresented.

In other embodiments the app may take into account shopping objectivessuch as miles, minimum number of stops, bus or transit schedule, androutes. In one embodiment, if the shopper is traveling by public transitthe stores searched may by definition be limited to those on or near theroute of the particular public transit vehicle, and the app may alsocompute, using available historical data, how much an individual cancarry by weight and bulk. In this regard, demographic data such theshopper's age and/or other physically identifying data (e.g., height,weight, gender) may be entered into the app to be factored in foroptimizing, on the theory that older people may carry less than youngerpeople. In other embodiments, a shopping objective may be meeting theshopper's preference history, such as the shopper's store preferences,shopper's brand preferences, and the shopper's item type preferences maybe entered into the app and the shopping list optimized based on one ormore of the objectives. For example, if the shopper's preference listindicates preference for Whole Foods® for groceries, Target® orWal-Mart® for dry goods, and Home Depot® for building materials, thesearch may be limited to those stores. Of course, the above specialprice prompts may also be included.

With some embodiments, the optimized shopping list may be shown as asimple list, with each individual item entry including any one or moreof: a price at which an item is being offered; a store name (virtualonline, or physical, e.g., local brick and mortar); a brief descriptionof the items being offered; a physical distance from a shopper'slocation to the store at which the items is being offered; a link toshare the listing with someone; a link to a map showing directions fromthe shopper's current location, or some shopper-specified location, tothe store; a travel time indicating how long (in time) it would take theshopper to travel via a particular mode, to the location of the store atwhich the product is being offered; and a quantity of a product beingoffered at the store. With some embodiments, search results for onlinevirtual stores may be shown separate from the search results for locallyavailable items, while in some embodiments, the search results areintermingled, and/or arranged according to some other specific aspect orattribute, such as price. With some embodiments, a shopper may filterthe search results to only view items located at stores within athreshold distance; located at stores within a threshold travel time(where the mode of travel can be specified), that have prices that areless than, or exceed, some threshold price, and so forth.

The shopper may actuate the app to begin optimizing the shopping list.Alternatively any of a plurality of automatic actuations may beemployed. For example, if the mobile device GPS system detects that thedevice is moving more than a predetermined distance, the system mayassume the shopper is traveling to do the shopping indicated by theshopping list, and this may trigger the app or, in some embodiments, thescanning layer, to begin the scanning discussed above and assembling alist and begin the shopping optimization. The system would then run asearch against retailers, taking into account factors such as loyaltycards, coupons, discounts offered by stores, and purchase history of theshopper, which narrows the list in order to optimize the shopping trip.Based on the foregoing, cost lookups and inventory data for each item onthe list can be performed at nearby (or favorite) stores (using Milo®,or a similar service, for example). The optimizer may generate one ormore lists with total costs or may divide the list among differentnearby stores in an attempt to find the optimal set of stores from whichto purchase the items. Such objectives may include price (factoring inon-sale items, the above-mentioned loyalty cards, coupons, discounts),the purchase preferences or history of the shopper), travel time, mostefficient use of time, number of stops, transportation options, fuelcosts, sufficiency of inventory for each individual item, the preferredbrands or types in the shopper's preference list or history, or otherpredetermined objectives, which may be set by the shopper. Dividingpurchase of the items among stores may be based on insufficient quantityat a single store, and may also be based on the above objectives. Forexample, one store may have the better price (factoring in on-saleitems, the above-mentioned loyalty cards, coupons, discounts and thepurchase history of the shopper) for some of the items and another storemay have the better price for other items on the shopping list. Asanother example, one store may have the preferred brand for some of theitems, and another store may have the preferred brand for other of theitems.

Consistent with some embodiments, a web-based search engine cooperateswith the mobile app to optimize a shopping list and return to a clientcomputing device, either mobile, stationary, or to both a mobile deviceand to a stationary device, the shopping list organized based onpredetermined objectives, as discussed above. In alternate embodiments,a shopper may enter one or more selections into the shopper's mobiledevice indicating the shopper's objectives. In one embodiment theshopper may select time, which would cause the system to generate a listwith the shortest travel time. In another embodiment the shopper mayselect lowest cost. In another embodiment, the shopper could selectbrands and stores, in which case the optimization would be limited tothe shopper's preferred store based on the shopper's preference list orpurchase history (obtained as discussed below), and brands specified or,if not specified on the list, the preferred brands in the shopper'spreference list or history. In another embodiment, a list may begenerated based on one or more of the above selections, such as shortesttravel time and preferred stores. In some instances a specific brand(brand X) of item is selected by the shopper, or entered from theshopper's preference list, and the system may search for brand X. Thesystem may also search for alternate brands and find such a good pricefor the same item in brand Y, that the system may prompt the shopper asto whether brand Y at the given price might preferred. Likewise, theforegoing good price may be found online instead of at a bricks andmortar store and the shopper may be prompted as to whether to purchasethe item online if the price can be obtained. The price trigger pointfor such prompts may be predetermined either by the system, or by theshopper, for example by entering percentage discounts that would causethe shopper to be prompted to determine whether the shopper prefers todepart from a stated preference.

The mobile device may also allow entry of preorder, reservation, or holdoptions to allow for the shopper to preorder an item such as take-outfood or hold an item or quantity of item, and then execute the shoppinglist with time of the trip, including likely time at each store,factored into time of the trip, and the distances involved, includingthe distance from the final store to the restaurant to pick up thetake-out order at the desired time.

With some embodiments, the shopper may toggle the presentation of theoptimized list between distance and time, such that the search resultscan be ordered based on distance (e.g., the geodesic distance, ordistance as the crow flies) or, the more practical and usefulmeasure—the time required to travel between the location of the shopperand the location of the store offering the items presented in a searchresult. With some embodiments discussed above, the shopper can specify amode of transportation (e.g., walking, biking, automobile, publictransportation, etc.) and the travel time to obtain the items on theshopping list will be derived based on the routes available whentravelling via the selected mode. With some embodiments, variousfiltering criteria may be applied. For example, the shopper may requestthat the shopping list be optimized with respect to one or more storesthat are within a predefined travel time, or distance. Similarly, ashopper may indicate a preference for shopping only at specific stores(e.g., Apple® Store, Best Buy®, Wal-Mart®, and so forth) to obtain theshopping list organized by items being offered only by those stores.

With some embodiments, the shopping list may be organized by the shopperinteracting with a map. In particular, with some embodiments, theshopper may interact with a map to specify anyone or more of: thestarting location to be used for deriving the distance or travel time tothe items associated with the individual search results; a specificgeographical region of interest, from which to display search results; acorridor or commuting route—from which any point along the corridor canbe used as the starting point to derive the distance to a storeassociated with a search result. The map may be presented as part of aweb-based map application, a desktop computer application, or anapplication that is specific to a particular mobile computing platform(e.g., such as Apple's iOS, or Google's Android operating systems.)

Optimal lists may be presented to the shopper along with directionsand/or a map to direct the shopper to the different stores. Theoptimization could also include accessing a shopper's purchase historyor preferences, discussed above, via one or more retailers, onlinee-commerce providers (e.g., eBay), data recorded in the app, allcoupons, discounts, in-store specials, and the like to aid in compilingthe costs for the list of items. For example, if the list includes ageneric term like “ground beef”, the list could be augmented and thecosts could be made more accurate by recognizing from the shopper'spurchase history the shopper prefers to purchase organic ground beef asthe type preference. Also, optimized in-store directions could provide aspecifically ordered shopping list to direct a shopper to the itemswithin the store. The directions could specify an ordered path within astore for picking up items on the list. For example, the directionscould tell a shopper to pick up items 2 and 4 from aisle 1, and thenswing over to aisle 2 to pick up item 1, then aisle 3 for item 3, etc.

Shopping

As used herein, “shopping” may be viewed as executing the shopping list.The shopper obtains the list optimized by the system and enters into abricks and mortar store. As the shopper picks up the various shoppingitems they may be checked off the list, either by shopper selection of aselectable icon or other indicator (e.g., image, text, button) on themobile device or, in more efficient manner for the shopper, by gesture,by taking a photo, by scanning the item bar code, or other suitableaction. The shopper may take a photograph of the items by the mobiledevice as the items are entered into the shopping cart or, in someinstances, by taking a photograph of all items in the cart. As mentionedabove, the items may be checked off the list by device gesture. Anon-exhaustive list of device gestures may be seen in the Appendix. Asitems are checked off the list they may be transmitted wirelessly to thestore's system which may then use the data to prepare a Point of Sale(POS) check-out list such that time waiting in line to check out and payfor the goods will be minimized. Gestures, which may entail turning onthe device camera for gesture recognition, may not be capable ofidentifying the item picked up by the user. However, gestures could befunction to identify the item picked up if the list were specificallyordered (e.g., #1 milk, #2 soap, #3 apples) as discussed above, and thenwhen the user picks up the first item, he performs the gesture and thesystem interprets the gesture to mean that the user picked up milk. Thiswould depend on the user following the list and picking up the items inthe specified order. In general it might be easier to just perform adevice gesture. For example, the device gesture could leverage anaccelerometer of the device so that if the shopper “waves” the deviceover the item or shake the device or move the device some other way, thedevice (which is ordinarily not moving) records or detects a movement ofthe device and maps that movement to the recognized gesture of pickingup an item.

Gestures are more of an intuitive way of crossing items off the list sothat when the shopper looks at the list, he or she doesn't have torecount each item in the shopping basket and manually cross it off.Gestures may not be sufficient to determine specific brand or type ofitem purchased. To know what specific type of apple was purchased, theshopper may scan the barcode or enter the product code into the app orobtain a copy of the receipt of items purchased and map “apples” to“Fuji Apples, 2.3 lbs., $5.50” on the receipt.

In one embodiment, the system may also prompt the shopper after an itemis checked off the list in order to update the shopper's preference listover time. For example, the system may tap into PayPal or a similarservice to determine a list of the shopper's past preferences anddetermine that the shopper prefers Fuji apples to Granny Smith apples.For example, if during shopping the shopper checked off apples, thesystem may prompt, “Did you buy Fuji apples?” The reply may be used incontinually updating of the shopper's preferences (purchase history). Ifthe shopper over time begins buying Granny Smith more often than Fuji,the preference list will change the shopper's preference in apples toGranny Smith.

In another embodiment, purchase history (preference) list update may beaccomplished automatically by entering the data on the POS check-outlist if that data is available to the app and using the data to updatepreferences. The App may be designed to update the shopper's preferencesat or after checkout, when the items are actually purchased. Forexample, the app could receive a receipt or detailed list of itemspurchased and could use that receipt/list to update user preferenceswith items actually purchased. This could be accomplished via a paymentprovider or point-of-sale provider hooking into the mobile app andproviding a digital copy of the receipt. Or the receipt could beobtained from the retailer (via API call), especially if the retaileralready lets the user link the retailer loyalty card into the app. Forexample, if the store or the payment provider has a system that is“open” it may allow the app to have access to the transaction data. Inanother embodiment, the credit card processor for the shopper's creditcard may allow the shopper to have access to the transaction data.Alternatively, the user may take a photo of the paper receipt from thePOS and scan/OCR the receipt and import it into the app to determineitems purchased.

If the store won't expose transaction data, then coupons that areredeemed will be exposed since if a Campbell soup coupon is redeemed itshows that the shopper bought Campbell soup. For example, a mobile appmay expose coupons to the shopper and allow the shopper to link/loadcoupons to the shopper's loyalty card account. When the shopper checksout at the retailer and signs in at the POS with the shopper's loyaltycard (swipe, enter phone #) and buys the item having the associatedcoupon, the POS knows to apply the coupon to the purchase of the item.The mobile app will know the coupon is redeemed based onpost-transaction processing (it knows the shopper bought the item andthat the coupon was used), so if the shopper can get coupon redemptiondata from the retailer or from the coupon provider (e.g., themanufacturer, the distributor, the coupon company), that could beanother way to determine what specific item is purchased by a user.

Example System

FIG. 1 is a block diagram depicting a system 100 for delivering searchresults, according to an example embodiment. The system 100 can includea shopper 110, a network-based publication system 120 with a searchengine, and one or more merchants 130 (and merchant systems). In anexample, the shopper 110 can connect to the network-based publicationsystem 120 via a client computing device 115 (e.g., desktop, laptop,smart phone, PDA, or similar electronic device capable of some form ofdata connectivity). The network-based publication system 120 willreceive and process a query from the shopper's client computing device.Generally, location information specifying the physical or geographicallocation of the shopper will be received with the query. For example, ifthe device is a mobile device, a GPS unit may inform the device of itslocation, such that the location information of the device can be sharedwith the network-based publication system 120. Other known techniquesfor deriving location information may be used with both mobile andnon-mobile client computing devices, for example, such as desktopcomputers, etc. For instance, with some embodiments, the locationinformation indicating the location of the shopper may be explicitlyspecified by the shopper, for example, by the shopper interacting with amap.

In an example, the merchant 130 can operate computer systems, such as aninventory system 132 or a POS system 134. The network-based publicationsystem 120 can interact with any of the systems used by merchant 130 foroperation of the merchant's retail or service business. In an example,the network-based publication system 120 can work with both POS system134 and inventory system 132 to obtain access to inventory available atindividual retail locations run by the merchant. This inventoryinformation can be used in both generating items listings, and selectingand ordering search results served by the network-based publicationsystem 120.

Example Operating Environment

With some embodiments, the shopper may explicitly indicate or specifyhis current location for use in deriving a distance or travel time tostores offering products/services. However, with some embodiments,location information of the shopper may be derived with a mobilecomputing device of the shopper. FIG. 2 is a block diagram illustratingan environment 200 for operating a mobile device 115, according to anexample embodiment. The environment 200 is an example environment withinwhich methods of serving search results can be operated. The environment200 can include a mobile device 115, a communication connection 210, anetwork 220, servers 230, a communication satellite 270, a merchantserver 280, and a database 290. The servers 230 can optionally includelocation based service application 240, location determinationapplication 250, and publication application 260 with search engine 261.The database 290 can optionally include merchant databases 292, shopperprofile database 294, and/or location history database 296. The mobiledevice 115 represents one example device that can be utilized by ashopper to receive offers and share context information associated withthe shopper. The mobile device 115 may be any of a variety of types ofdevices (for example, a cellular telephone, a PDA, a Personal NavigationDevice (PND), a handheld computer, a tablet computer, a notebookcomputer, or other type of movable device). The mobile device 115 mayinterface via a connection 210 with a communication network 220.Depending on the form of the mobile device 115, any of a variety oftypes of connections 210 and communication networks 220 may be used.

For example, the connection 210 may be Code Division Multiple Access(CDMA) connection, a Global System for Mobile communications (GSM)connection, or other type of cellular connection. Such connection 210may implement any of a variety of types of data transfer technology,such as Single Carrier Radio Transmission Technology (1xRTT),Evolution-Data Optimized (EVDO) technology, General Packet Radio Service(GPRS) technology, Enhanced Data rates for GSM Evolution (EDGE)technology, or other data transfer technology (e.g., fourth generationwireless, 4G networks). When such technology is employed, thecommunication network 220 may include a cellular network that has aplurality of cell sites of overlapping geographic coverage,interconnected by cellular telephone exchanges. These cellular telephoneexchanges may be coupled to a network backbone (for example, the publicswitched telephone networks (PSTN), a packet-switched data network, orother types of networks).

In another example, the connection 210 may be Wireless Fidelity (Wi-Fi,IEEE 802.11x type) connection, a Worldwide Interoperability forMicrowave Access (WiMAX) connection, or another type of wireless dataconnection. In such an embodiment, the communication network 220 mayinclude one or more wireless access points coupled to a local areanetwork (LAN), a wide area network (WAN), the Internet, or otherpacket-switched data network.

In yet another example, the connection 210 may be a wired connection,for example an Ethernet link, and the communication network may be aLAN, a WAN, the Internet, or other packet-switched data network.Accordingly, a variety of different configurations are expresslycontemplated.

A plurality of servers 230 may be coupled via interfaces to thecommunication network 220, for example, via wired or wirelessinterfaces. These servers 230 may be configured to provide various typesof services to the mobile device 115. For example, one or more servers230 may execute location based service (LBS) applications 240, whichinteroperate with software executing on the mobile device 115, toprovide LBSs to a shopper. LBSs can use knowledge of the device'slocation, and/or the location of other devices and/or retail stores,etc., to provide location-specific information, recommendations,notifications, interactive capabilities, and/or other functionality to ashopper. With some embodiments, the LBS operates in conjunction with thepublication application 260 and search engine 261, in particular, doprovide search results that are arranged based on the distance or traveltime between a mobile device 115 (or other computer device) and a retailstore. For example, an LBS application 240 can provide location data toa network-based publication system 120, which can then be used toarrange a set of search results, based on distance and/or travel timebetween two locations. Knowledge of the mobile device's location, and/orthe location of other devices, may be obtained through interoperation ofthe mobile device 115 with a location determination application 250executing on one or more of the servers 230. Location information mayalso be provided by the mobile device 115, without use of a locationdetermination application, such as application 250. In certain examples,the mobile device 115 may have some limited location determinationcapabilities that are augmented by the location determinationapplication 250.

Example Mobile Device

FIG. 3 is a block diagram illustrating the mobile device 115, accordingto an example embodiment. The mobile device 115 may include a processor310. The processor 310 may be any of a variety of different types ofcommercially available processors suitable for mobile devices (forexample, an XScale architecture microprocessor, a Microprocessor withoutInterlocked Pipeline Stages (MIPS) architecture processor, or anothertype of processor). A memory 320, such as a Random Access Memory (RAM),a Flash memory, or other type of memory, is typically accessible to theprocessor. The memory 320 may be adapted to store an operating system(OS) 340, as well as application programs 350, such as theabove-discussed mobile app, and a location enabled application that mayprovide LBSs to a shopper. The scanning device discussed above is seenat 330. The processor 310 may be coupled, either directly or viaappropriate intermediary hardware, to a display 350 and to one or moreinput/output (I/O) devices 360, such as a keypad, a touch panel sensor,a microphone, and the like. Similarly, in some embodiments, theprocessor 310 may be coupled to a transceiver 370 that interfaces withan antenna 390. The transceiver 370 may be configured to both transmitand receive cellular network signals, wireless data signals, or othertypes of signals via the antenna 390, depending on the nature of themobile device 115. In this manner, the connection 210 with thecommunication network 220 may be established. Further, in someconfigurations, a GPS receiver 380 may also make use of the antenna 390to receive GPS signals.

Additional detail regarding providing and receiving location-basedservices can be found in U.S. Pat. No. 7,848,765, titled “Location-BasedServices,” granted to Phillips et al. and assigned to Where, Inc. ofBoston, Mass., which is hereby incorporated by reference.

An example geo-location concept discussed within U.S. Pat. No. 7,848,765is a geofence. A geofence can be defined as a perimeter or boundaryaround a physical location or mobile object (e.g., a shopper). Ageofence can be as simple as a radius around a physical locationdefining a circular region around the location. However, a geofence canbe any geometric shape or an arbitrary boundary drawn on a map. Ageofence can be used to determine a geographical area of interest forthe calculation of demographics, advertising, presenting search results,or similar purposes. Geofences can be used in conjunction withidentifying and presenting search results, as described herein. Forexample, a geofence can be used to assist in determining whether ashopper (or mobile device associated with the shopper) is within ageographic area of a particular merchant. If the shopper is within ageofence established by the merchant or the publication system, thesystems discussed herein can use that information to identify andpresent search results (e.g., via a mobile device associated with theshopper).

Example Platform Architecture

FIG. 4 is a block diagram illustrating a network-based system 400 forprocessing a search query, and presenting search results, as describedmore fully herein. The block diagram depicts a network-based system 400(in the exemplary form of a client-server system), within which anexample embodiment can be deployed. A networked system 402 is shown, inthe example form of a network-based location-aware publication,advertisement, or marketplace system, that provides server-sidefunctionality, via a network 404 (e.g., the Internet or WAN) to one ormore client machines 410, 412. FIG. 4 illustrates, for example, a webclient 406 (e.g., a browser, such as the Internet Explorer browserdeveloped by Microsoft Corporation of Redmond, Wash. State) and aprogrammatic client 408 executing on respective client machines 410 and412. In an example, the client machines 410 and 412 can be in the formof a mobile device, such as mobile device 115.

An Application Programming Interface (API) server 414 and a web server416 are coupled to, and provide programmatic and web interfacesrespectively to, one or more application servers 418. The applicationservers 418 host one or more publication modules 420 (in certainexamples, these can also include search engine modules, commercemodules, advertising modules, and marketplace modules, to name a few),payment modules 422, and dynamic offer modules 432. The applicationservers 418 are, in turn, shown to be coupled to one or more databaseservers 424 that facilitate access to one or more databases 426. In someexamples, the application server 418 can access the databases 426directly without the need for a database server 424.

The publication modules 420 may provide a number of publication andsearch functions and services to shoppers that access the networkedsystem 402. The payment modules 422 may likewise provide a number ofpayment services and functions to shoppers. The payment modules 422 mayallow shoppers to accumulate value (e.g., in a commercial currency, suchas the U.S. dollar, or a proprietary currency, such as “points”) inaccounts, and then later to redeem the accumulated value for products(e.g., goods or services) that are advertised or made available via thevarious publication modules 420, within retail locations, or withinexternal online retail venues. The payment modules 422 may also beconfigured to present or facilitate a redemption of offers, generated bythe location-aware offer modules 432, to a shopper during checkout (orprior to checkout, while the shopper is still actively shopping). Theoffer modules 432 may provide dynamic context sensitive offers (e.g.,coupons or immediate discount deals on targeted items) to shoppers ofthe networked system 402. The offer modules 432 can be configured to useall of the various communication mechanisms provided by the networkedsystem 402 to present offer options to shoppers. The offer options canbe personalized based on current location, time of day, shopper profiledata, past purchase history, or recent physical or online behaviorsrecorded by the network-based system 400, among other things (e.g.,context information). While the publication modules 420, payment modules422, and offer modules 432 are shown in FIG. 4 to all form part of thenetworked system 402, it will be appreciated that, in alternativeembodiments, the payment modules 422 may form part of a payment servicethat is separate and distinct from the networked system 402.Additionally, in some examples, the offer modules 432 may be part of thepayment service or may form an offer generation service separate anddistinct from the networked system 402.

Further, while the system 400 shown in FIG. 4 employs a client-serverarchitecture, the present embodiment is of course not limited to such anarchitecture, and could equally well find application in a distributed,or peer-to-peer, architecture system, for example. The variouspublication modules 420, payment modules 422, and offer modules 432could also be implemented as standalone systems or software programs,which do not necessarily have networking capabilities.

The web client 406 accesses the various publication modules 420, paymentmodules 422, and offer modules 432 via the web interface supported bythe web server 416. Similarly, the programmatic client 408 accesses thevarious services and functions provided by the publication modules 420,payment modules 422, and offer modules 432 via the programmaticinterface provided by the API server 414. The programmatic client 408may, for example, be a smartphone application that enables shoppers tocommunicate search queries to the system while leveraging shopperprofile data and current location information provided by the smartphoneor accessed over the network 404.

FIG. 4 also illustrates a third party application 428, executing on athird party server machine 440, as having programmatic access to thenetworked system 402 via the programmatic interface provided by the APIserver 414. For example, the third party application 428 may, utilizinginformation retrieved from the networked system 402, support one or morefeatures or functions on a website hosted by the third party. The thirdparty website may, for example, provide one or more promotional,marketplace or payment functions that are supported by the relevantapplications of the networked system 402. Additionally, the third partywebsite may provide merchants with access to the offer modules 432 forconfiguration purposes. In certain examples, merchants can useprogrammatic interfaces provided by the API server 414 to develop andimplement rules-based pricing schemes that can be implemented via thepublication modules 420, payment modules 422, and offer modules 432.

Example Methods

FIG. 5 is a flowchart illustrating a method 500 for creating a shoppinglist according to an embodiment. The method starts at 510 and at 520 themobile app, or the scanning layer, searches at the shopper's electroniccommunications, such as email and text, voice communications such asvoice mails, and/or visual communications processing a search query,according to an example embodiment. As discussed above, the mobile appor the scanning layer can be actuated and set to scan for apredetermined time period, a predetermined number of messages, ormessages from a particular person, each of which may be set by theshopper, to determine relevant emails, texts (such as the above textmessage), voice mail, photos, instant chat messages, videos, and thelike that are appropriately designated as including shopping listcontent. A decision is taken at 530 to determine whether a particularentry, such as an email, text, photo, voice mail or is appropriatelymarked as a shopping item. If Yes, the item is imported, or entered,into the shopping list at 540. A decision is taken at 550 to determinewhether the scanning has reached the end of the entries marked asshopping items. If the decision is No, then the shopper's communicationentries are scanned again at 520 and the method continues. When the endof the marked entries is reached at 550, the decision takes the Yes legand the shopping list is transmitted for optimization. One of ordinaryskill in the art will readily understand that the shopping list may betemporarily stored for later transmission for optimization.

FIG. 6 is a flowchart illustrating a method 600 for optimizing ashopping list, according to an example embodiment. At 610 the shopperenters the optimization objective, such as time, price, or an entry fromthe shopper's purchase history, or other objectives. As discussed above,the objective may be efficient use of time, which would cause the systemto generate a list with the shortest travel time. In another embodimentthe shopper may select lowest cost as the objective. In anotherembodiment, the shopper could select brands and stores, in which casethe optimization would be limited to the shopper's preferred store basedon the shopper's preference list and brands specified or, if notspecified on the list, the preferred brands in the shopper's preferencelist or history. Other objectives include number of stops in theshopping route, or transportation options. In another embodiment, theoptimized list may be generated based more than one of the aboveobjectives, such as shortest travel time and preferred stores. Theobjectives may include demographic data such as shopper's age and/orother physically identifying data (e.g., height, weight, gender), modeof transportation, and similar objectives. From the foregoing data theoptimization can take into account how much weight and space the mode oftransportation can carry. Other examples can be given from the abovediscussion of shopping objectives. At 6230 the mobile app, perhaps inconjunction with server 230 that optionally includes location basedservice application 240, location determination application 250, andpublication application 260 with search engine 261, searches merchantdatabases to locate items based on the objectives. At 630 the same or asimilar search may be made, but based on alternate objectives such asalternate brands. The shopping list is optimized by arranging theshopping items associated with the locations found at 620 in accordancewith the above parameters and objectives. A decision is taken at 640 todetermine whether a better deal, or buy, has been found using thealternate options as seen at 630. If No, the method ends at 670. If theYes decision is taken, a decision is then taken at 660 to determinewhether the shopper wishes to accept the better deal even though it isbased on an alternate objective. If Yes, the optimized shopping list at640 is updated with the store of the better deal. If No, the methodends.

With the shopping list organized, the shopper may complete the shoppingtrip. FIG. 7 is a flowchart illustrating a method 700 for checkingselected items off a shopping list and updating shopping objectives,according to an example embodiment. At 710 the shopper receives theoptimized shopping list at 710, and at 720 enters the brick and mortarstore to purchase the items optimized for purchase at the store based onthe objective of the shopping trip. At 730 the shopper selects the itemsoff the shelf. At 740 the shopper checks selected items off the list.This may be accomplished by gesture, by taking a photo, by scanning theitem bar code, or other suitable action. The shopper may take aphotograph of the items by way of the mobile device as the items areentered into the shopping cart or, in some instances, by taking aphotograph of all items in the cart. As items are checked off the list,the system may, as discussed above, prompt the shopper to determinewhether the shopper selected type or brand of item on the shopper'spreference list, in order to update the shopper's preference list overtime. As items are checked off the list they may, in some embodiments,be transmitted wirelessly to the store's system at 750 which may thenuse the data to prepare a Point of Sale (POS) check-out list such thattime waiting in line to check out and pay for the goods will beminimized. In other embodiments, the shopper proceeds to check out andthe shopper's preferences are updated at 760. As discussed above, themobile app may be designed to update the shopper's preferences at orafter checkout, when the items are actually purchased. For example, theapp could receive a receipt or detailed list of items purchased andcould use that receipt/list to update user preferences with itemsactually purchased.

At 770 a decision may be taken to determine whether there is more thanone store on the optimized list. If Yes, the method repeats beginning atstep 720. If No, the method ends at 780.

Example Shopper Interfaces

FIG. 8 illustrates an example shopper interface of an application for amobile device including an interactive map on which search results canbe shown, according to some embodiments. As illustrated in FIG. 8, theshopper can indicate a geographical region of interest. In this examplethe shopper has simply placed his finger in a first location on the mapand then dragged his finger to generate a circle, which will serve asthe geographical area of interest for purposes of filtering andpresenting the search results. Assuming the shopper selects as thecenter of the circle is current location, the shopper will be presentedwith a quick visual presentation of the locations and names of storeswhere items on the shopping list are being offered in accordance withthe above objectives.

The various operations of example methods described herein may beperformed, at least partially, by one or more processors that aretemporarily configured (e.g., by software) or permanently configured toperform the relevant operations. Whether temporarily or permanentlyconfigured, such processors may constitute processor-implemented modulesor objects that operate to perform one or more operations or functions.The modules and objects referred to herein may, in some exampleembodiments, comprise processor-implemented modules and/or objects.

Similarly, the methods described herein may be at least partiallyprocessor-implemented. For example, at least some of the operations of amethod may be performed by one or more processors orprocessor-implemented modules. The performance of certain operations maybe distributed among the one or more processors, not only residingwithin a single machine or computer, but deployed across a number ofmachines or computers. In some example embodiments, the processor orprocessors may be located in a single location (e.g., within a homeenvironment, an office environment or at a server farm), while in otherembodiments the processors may be distributed across a number oflocations.

The one or more processors may also operate to support performance ofthe relevant operations in a “cloud computing” environment or within thecontext of “software as a service” (SaaS). For example, at least some ofthe operations may be performed by a group of computers (as examples ofmachines including processors), these operations being accessible via anetwork (e.g., the Internet) and via one or more appropriate interfaces(e.g., Application Program Interfaces (APIs)).

FIG. 9 is a block diagram of a machine in the form of a computer systemwithin which a set of instructions, for causing the machine to performany one or more of the methodologies discussed herein, may be executed.In alternative embodiments, the machine operates as a standalone deviceor may be connected (e.g., networked) to other machines. In a networkeddeployment, the machine may operate in the capacity of a server or aclient machine in a client-server network environment, or as a peermachine in peer-to-peer (or distributed) network environment. In apreferred embodiment, the machine will be a server computer, however, inalternative embodiments, the machine may be a personal computer (PC), atablet PC, a set-top box (STB), a Personal Digital Assistant (PDA), amobile telephone, a web appliance, a network router, switch or bridge,or any machine capable of executing instructions (sequential orotherwise) that specify actions to be taken by that machine. Further,while only a single machine is illustrated, the term “machine” shallalso be taken to include any collection of machines that individually orjointly execute a set (or multiple sets) of instructions to perform anyone or more of the methodologies discussed herein.

The example computer system 900 includes a processor 902 (e.g., acentral processing unit (CPU), a graphics processing unit (GPU) orboth), a main memory 901 and a static memory 906, which communicate witheach other via a bus 908. The computer system 900 may further include adisplay unit 910, an alphanumeric input device 917 (e.g., a keyboard),and a shopper interface (UI) navigation device 911 (e.g., a mouse). Inone embodiment, the display, input device and cursor control device area touch screen display. The computer system 900 may additionally includea machine-readable storage device 916 (e.g., drive unit), a signalgeneration device 918 (e.g., a speaker), a network interface device 920,and one or more sensors 921, such as a global positioning system sensor,compass, accelerometer, or other sensor.

The drive unit 916 includes a machine-readable medium 922 on which isstored one or more sets of instructions and data structures (e.g.,software 923) embodying or utilized by any one or more of themethodologies or functions described herein. The software 923 may alsoreside, completely or at least partially, within the main memory 901and/or within the processor 902 during execution thereof by the computersystem 900, the main memory 901 and the processor 902 also constitutingmachine-readable media.

While the machine-readable medium 922 is illustrated in an exampleembodiment to be a single medium, the term “machine-readable medium” mayinclude a single medium or multiple media (e.g., a centralized ordistributed database, and/or associated caches and servers) that storethe one or more instructions. The term “machine-readable medium” shallalso be taken to include any tangible medium that is capable of storing,encoding or carrying instructions for execution by the machine and thatcause the machine to perform any one or more of the methodologies of thepresent embodiment, or that is capable of storing, encoding or carryingdata structures utilized by or associated with such instructions. Theterm “machine-readable medium” shall accordingly be taken to include,but not be limited to, solid-state memories, and optical and magneticmedia. Specific examples of machine-readable media include non-volatilememory, including by way of example semiconductor memory devices, e.g.,EPROM, EEPROM, and flash memory devices; magnetic disks such as internalhard disks and removable disks; magneto-optical disks; and CD-ROM andDVD-ROM disks.

The software 923 may further be transmitted or received over acommunications network 926 using a transmission medium via the networkinterface device 920 utilizing any one of a number of well-knowntransfer protocols (e.g., HTTP). Examples of communication networksinclude a local area network (“LAN”), a wide area network (“WAN”), theInternet, mobile telephone networks, Plain Old Telephone (POTS)networks, and wireless data networks (e.g., Wi-Fi® and WiMax® networks).The term “transmission medium” shall be taken to include any intangiblemedium that is capable of storing, encoding or carrying instructions forexecution by the machine, and includes digital or analog communicationssignals or other intangible medium to facilitate communication of suchsoftware.

Although specific example embodiments have been described herein, itwill be evident that various modifications and changes may be made tothese embodiments without departing from the broader spirit and scope ofthe invention. Accordingly, the specification and drawings are to beregarded in an illustrative rather than a restrictive sense. Theaccompanying drawings that form a part hereof, show by way ofillustration, and not of limitation, specific embodiments in which thesubject matter may be practiced. The embodiments illustrated aredescribed in sufficient detail to enable those skilled in the art topractice the teachings disclosed herein. Other embodiments may beutilized and derived therefrom, such that structural and logicalsubstitutions and changes may be made without departing from the scopeof this disclosure. This Detailed Description, therefore, is not to betaken in a limiting sense, and the scope of various embodiments isdefined only by the appended claims, along with the full range ofequivalents to which such claims are entitled.

1. A method of optimizing an electronic shopping list comprising:receiving, by a computer processor, the electronic shopping list;receiving at least one predetermined objective from the group consistingof a shopping history, mode of transportation, user demographic data,and vehicle carrying capacity; optimizing the shopping list based on theat least one predetermined objective; and providing the optimizedshopping list.
 2. The method of claim 1 wherein the shopping historyincludes a preference from the group of (preferences consisting of astore preference, a brand preference, and an item type preference. 3.The method of claim 1 wherein the at least one objective furtherincludes an objective from the group consisting of price, milestraveled, fuel costs, route of travel, and number of stops.
 4. Themethod of claim 3 wherein the at least one objective is the route oftravel and optimizing the shopping list includes providing an indicationof traffic along the route of travel.
 5. The method of claim 1 whereinat least one shopping objective further includes allowing entry of apreorder for an item for pickup at a business establishment at a desiredtime, and executing the shopping list within a time that allows pickingup the preordered item at approximately the desired time.
 6. The methodof claim 2 wherein an item on the shopping list does not include a typedesignation and optimization includes detecting the item without a typedesignation and adding the item type designation based on the item typepreference.
 7. The method of claim 1 further comprising detecting use ofthe optimized shopping list, the use including selecting items andchecking the selected items of the optimized shopping list using atleast one of the group consisting of gestures, taking a photo ofselected items, and scanning a bar code of the selected items.
 8. Themethod of claim 7 wherein the identity of the selected items istransmitted to an information system for generating a point of salereceipt concurrently with the selection of the items.
 9. The method ofclaim 7 further including checking out the items at a point of sale, andobtaining an electronic copy of a point of sale receipt for the checkedout items for updating a preference list.
 10. The method of claim 7further including obtaining an electronic copy of redeemed coupons forat least some of the selected items for updating a preference list. 11.The method of claim 7 further including determining whether a selecteditem has the same brand as the brand for the item on a preference listand, responsive to a determination that the item purchased has adifferent brand than the brand for the item on the preference list,using the determination for updating the preference list.
 12. A methodof creating a shopping list comprising: scanning, by a computerprocessor executing a mobile app, at least one of the group consistingof emails, text messages, voice mails, and photographs; detectingmembers of the scanned at least one of the group which include shoppinglist content; and adding the detected members to a shopping list. 13.(canceled)
 14. A machine-readable storage device having embedded thereina set of instructions which, when executed by a machine, causesexecution of the following operations: receiving the electronic shoppinglist; receiving at least one predetermined objective from the groupconsisting of a shopping history, mode of transportation, userdemographic data, and vehicle carrying capacity; optimizing the shoppinglist based on the at least one predetermined objective; and providingthe optimized shopping list.
 15. The machine-readable storage device ofclaim 14 wherein the shopping history includes a preference from thegroup of preferences consisting of a store preference, a brandpreference, and an item type preference.
 16. The machine-readablestorage device of claim 14 wherein the at least one objective furtherincludes an objective from the group consisting of price, milestraveled, fuel costs, route of travel, and number of stops.
 17. Themachine-readable storage device of claim 14 wherein the at least oneobjective is the route of travel and optimizing the shopping listincludes providing an indication of traffic along the route of travel.18. The machine-readable storage device of claim 14 wherein at least oneshopping objective further includes allowing entry of a preorder for anitem for pickup at a business establishment at a desired time, andexecuting the shopping list within a time that allows picking up thepreordered item at approximately the desired time.
 19. Themachine-readable storage device of claim 15 wherein the preference is anitem type preference and optimization includes detecting an item withouta type designation and adding the item type designation based on theitem type preference.
 20. The machine-readable storage device of claim14 further comprising detecting use of the optimized shopping list, theuse including selecting items and checking the selected items off theoptimized shopping list using at least one of the group consisting ofgestures, taking a photo of selected items, and scanning a bar code ofthe selected items.
 21. The machine-readable storage device of claim 20wherein the identity of the selected items is transmitted to aninformation system for generating a point of sale receipt concurrentlywith the selection of the items.
 22. The machine-readable storage deviceof claim 20 further including checking out the items at a point of sale,and obtaining an electronic copy of a point of sale receipt for updatinga preference list.
 23. The machine-readable storage device of claim 20further including obtaining an electronic copy of redeemed coupons forat least some of the selected items for updating a preference list. 24.The machine-readable storage device of claim 20 further includingdetermining whether a selected item has the same brand as the brand forthe item on a preference list and, responsive to a determination thatthe item purchased has a different brand than the brand for the item onthe preference list, using the determination for updating the preferencelist.
 25. A machine-readable storage device having embedded therein aset of instructions which, when executed by a machine, causes executionof the following operations: scanning, by a computer processor executinga mobile app, at least one of the group consisting of emails, textmessages, voice mails, and photographs; detecting members of the scannedat least one of the group which include shopping list content; andadding the detected members to a shopping list.
 26. (canceled)
 27. Asystem for optimizing an electronic shopping list comprising: at leastone computer processor and computer storage configured to receive theelectronic shopping list; receive at least one predetermined objectivefrom the group consisting of a shopping history, a mode oftransportation, user demographic data, and vehicle carrying capacity;optimize the shopping list based on the at least one predeterminedobjective; and provide the optimized shopping list.
 28. A system forcreating a shopping list comprising: at least one computer processorcomputer processor and computer storage configured to use a mobile appto scan at least one of the group consisting of emails, text messages,voice mails, and photographs; detect members of the scanned at least oneof the group which include a designation as including shopping listcontent; and add the detected members to a shopping list.
 29. Amachine-readable storage device having embedded therein a set ofinstructions which, when executed by a machine, causes execution of thefollowing operations: scanning, by a processor executing a mobiledevice, at least one of the group consisting of emails, text messages,voice mails, and photographs; detecting members of the scanned at leastone of the group which include a designation as including shopping listcontent; adding the detected members to a shopping list; receiving atleast one predetermined objective; optimizing the shopping list based onthe at least one predetermined objective; and providing the optimizedshopping list.
 30. The machine-readable storage device of claim 29wherein the objective includes shopping history that includes apreference from the group of preferences consisting of a storepreference, a brand preference, and an item type preference.
 31. Themachine-readable storage device of claim 29 wherein the at least oneobjective further includes an objective from the group consisting ofprice, miles traveled, fuel costs, route of travel, and number of stops.32. The machine-readable storage device of claim 29 wherein the at leastone objective is the route of travel and optimizing the shopping listincludes providing an indication of traffic along the route of travel.33. The machine-readable storage device of claim 29 wherein at least oneshopping objective further includes allowing entry of a preorder for anitem for pickup at a business establishment at a desired time, andexecuting the shopping list within a time that allows picking up thepreordered item at approximately the desired time.
 34. Themachine-readable of claim 29 wherein an item on the shopping list doesnot include a type designation and optimization includes detecting theitem without a type designation and adding the item type designationbased on the item type preference.